// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLExpr_ptr ;
// import com.alibaba.druid.sql.ast.SQLObject_ptr ;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include <list>
#include "../SQLStatementImpl.h"

class SQLPrivilegeItem;
class SQLExpr;
class SQLObject;
class SQLObjectType;

class SQLPrivilegeStatement : virtual public SQLStatementImpl
{
public:
  SQLPrivilegeItem_list_ptr privileges;
  SQLExpr_list_ptr  users;
  SQLObject_ptr resource;

  // mysql
  SQLObjectType_ptr resourceType;

  SQLPrivilegeStatement();
  SQLPrivilegeStatement(DbType_ptr  dbType);
  SHAREDOBJECT(SQLPrivilegeStatement);

  SQLExpr_list_ptr  getUsers();

  void addUser(SQLExpr_ptr user);

  void setUsers(SQLExpr_list_ptr  users);

  SQLObject_ptr getResource();

  void setResource(SQLObject_ptr x);

  void setResource(SQLExpr_ptr resource);

  SQLPrivilegeItem_list_ptr getPrivileges();

  SQLObjectType_ptr getResourceType();

  void setResourceType(SQLObjectType_ptr x);
};
